var checkUserName = function(str) {
	if (!str) {
		return false
	}
	// 只能中英文，数字，下划线，减号
	var patt = /^[\u4e00-\u9fa5A-Za-z0-9-_]*$/
	return patt.test(str)
}

var checkIP = function(str) {
	if (!str) {
		return false
	}
	// 只能中英文，数字，下划线，减号
	var patt = /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
	return patt.test(str)
}

var checkUrl = function(str) {
	if (!str) {
		return false
	}
	var patt = /^((https|http|ftp|rtsp|mms)?:\/\/)+[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/
	return patt.test(str)	
}

var numberString = "0123456789"

var checkValueIsNumber = function(string) {
	var stringValue = Number(string)
	if (isNaN(stringValue) || stringValue == null || stringValue == undefined) {
		return false
	}
	if (stringValue == "") {
		return false
	}
	for (var i = 0; i < stringValue.length; i++) {
		var letter = stringValue[i]
		if (!numberString.includes(letter)) {
			return false
		}
	}
	if (stringValue.length > 1) {
		if (stringValue[0] == "0") {
			return false
		}
	}
	if (stringValue < 0) {
		return false
	}
	return true
}

var checkFormRequired = function(form) {
	var f = document.querySelector(form)
	var flag = true
	var allInputs = f.querySelectorAll("input")
	for (var i = 0; i < allInputs.length; i++) {
		var item = allInputs[i]
		if (item.required) {
			if (item.value == "") {
				flag = false
			}
		}
	}
	return flag
}

var checkFormMethod = function(obj, callajax) {
	$(obj.btnName).click(function(event) {
		if($(".active").find("a").text()=="百家乐"){
			return;
		}
		if (obj.isRegArray != undefined) {	
			for (var j = 0; j < obj.isRegArray.length; j++) {
				var item = obj.isRegArray[j]
			}
		}
				
		var div = document.querySelector(obj.divName)
		var type = div.dataset.type
		if (obj.isRepeatArray != undefined) {
			for (var q = 0; q < obj.isRepeatArray.length; q++) {
				var item = obj.isRepeatArray[q]
				if (div.dataset.type == "add") {
					if (item.dataArray.includes(item.inputValue())) {
						showNoticeModal(item.noticeText)
						return					
					}
				} else {
					var lastValue = item.exceptValue()
					for (var v = 0; v < item.dataArray.length; v++) {
						var dataItem = item.dataArray[v]
						if (dataItem == lastValue) {
							continue
						}
						if (dataItem == item.inputValue()) {
							showNoticeModal(item.noticeText)
							return						
						}
					}
				}
			}	
		}
		if (obj.callback != undefined) {
			var flag = obj.callback()
			if (flag != "ok") {
				showNoticeModal(flag)
				return				
			}
		}
		callajax()
	})
	
}

var bindSearchBtnAndResetBtnEvent = function(obj) {
	$(obj.search).on("click", function(event) {
		    var param = {}
			var t = $(obj.table).DataTable()
			for (var i = 0; i < obj.params.length; i++) {
				var item = obj.params[i]
				param[item.split("-")[2]] = $(item).val()
			}
	        t.settings()[0].ajax.data = param
	        t.ajax.reload()			
		})
		$(obj.reset).on("click", function(event) {
			var t = $(obj.table).DataTable()
		    var param = {}
			for (var i = 0; i < obj.params.length; i++) {
				var item = obj.params[i]
				param[item.split("-")[2]] = ""
				$(item).val("")
			}			
        t.settings()[0].ajax.data = param
        t.ajax.reload()			
		}) 		
}


var bindDelItemEvent = function(table, btnClass, path) {
	$(table).on("click", btnClass, function(event) {
		var idValue = $(event.target).closest("tr").find(".id-edit-td").text()
		$("#deleteModal").attr("data-id", idValue)
		$("#deleteModal").modal("show")
	})	
	$("#deleteModal #btn-i-delModalBtn").on("click", function(event) {
		var newRequest = {
			url: path,
			type: "post",
			data: {
				id: $("#deleteModal").attr("data-id"),
			},
			success: function(data) {
				showNoticeModal("删除成功！")
				$("#deleteModal").modal("hide")
				var tableItem = $(table).DataTable()
				tableItem.ajax.reload()
			},
			error: function(status) {
				showNoticeModal("删除失败！")
			}
		}
		ajax(newRequest)		
	})
}




// 1验证用户名
var checkUserName = function(str) {
	if (!str) {
		return false
	}
	//用户名为4到12位的数字和子母，至少有一个字母
	/*var patt = /^(?=.*[A-z])[A-z\d]{4,12}$/"
*/	var patt = /^[A-z\d]{4,12}$/
	/* var patt=/^[0-9]$/
*/	return patt.test(str)
}

// 2验证密码
var checkPassword = function(str) {
	if (!str) {
		return false
	}
	//  (简单)   6到16位包含字母数字下划线和减号
	var patt = /^[\w_-]{6,16}$/
	//  (较安全)   至少包含一个数字一个字母组成的6到16位密码
	//  patt =/^(?=.*[A-z])(?=.*\d)[A-z\d]{6,16}$/
		
	//  (安全)   至少包含一个数字一个字母和一个特殊字符组成的6到16位密码
	//  patt =/^(?=.*[A-z])(?=.*\d)(?=.*[!@#$%^&*?\(\)])[A-z\d]{6,16}$/	
	return patt.test(str)
}

//3验证手机号
var checkPhone = function(str) {
	if (!str) {
		return false
	}
	//以(13开头)或(145或147开头)或（15的除去4开头的)或(18除去1、4、5开头的手机号码)
	var patt = /^(13[0-9] | 14[57]) | 15[012356789] | 18[0236789])[0-9]{8}$/
	return patt.test(str)
}

//4验证身份证号
var checkIDcard = function(str) {
	if (!str) {
		return false
	}
	//身份证号（18位可查1800到3999年的）
	//var patt = /^[1-9]\d{5}(18|19|[23]\d)\d{2}((0[1-9])|[10-12])(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
	//身份证号（15位可查1800到3999年的）
	//var patt = /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$/
	//15位和18位的综合
	var patt=/(^[1-9]\d{5}(18|19|[23]\d)\d{2}((0[1-9])|[10-12])(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$)/
	return patt.test(str)
}


//5验证邮箱
var checkEmail = function(str) {
	if (!str) {
		return false
	}
	//前缀为数字字母点下划线连接线且只能以数字和字母开头，后缀不能以点下划线连接线结尾，一般以cn、com、club结尾
	var patt = /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/
	return patt.test(str)
}

//6验证ip地址
var checkIPs = function(str) {
	if (!str) {
		return false
	}
	//验证ip4的地址(不带端口号)（使用边界匹配不然256.1.1.1也能匹配成功，0~255开头）
	var patt = /^((2[0-4]\d|25[0-5]|1\d{2}|[1-9]\d|[1-9])\.){3}(2[0-4]\d|25[0-5]|1\d{2}|[1-9]\d|[1-9])$/
	//验证ip4的地址(带1到5位端口号)（使用边界匹配不然256.1.1.1也能匹配成功，0~255开头）
	/*var patt = /^((2[0-4]\d|25[0-5]|1\d{2}|[1-9]\d|[1-9])\.){3}(2[0-4]\d|25[0-5]|1\d{2}|[1-9]\d|[1-9])\:\d{5}$/
	return patt.test(str)*/
}

//7验证qq号
var checkQQcode = function(str) {
	if (!str) {
		return false
	}
	//6到10位的qq号
	var patt = /^[1-9][0-9]{5,9}$/
	return patt.test(str)
}


//8验证中文
var checkChinese = function(str) {
	if (!str) {
		return false
	}
	//验证中文
	var patt = /^[\u0391-\uFFE5]+$/
	return patt.test(str)
}

//9验证金额
var checkMoney = function(str) {
	if (!str) {
		return false
	}
	//金额可以为正整数或者1到2位的小数点
	var patt = /^(([1-9][0-9]*)|(([0](\.\d{1,2})?)|([1-9][0-9]*\.\d{1,2})))$/
	return patt.test(str)
}

//10验证百分比的比率
var checkRatio = function(str) {
	if (!str) {
		return false
	}
	//0到1之间的比率可以是1到4位小数点,不包括0,0.0,0.00,0.000,0.0000,包括1
	var patt = /^([1]|((?=.*[1-9])(0\.[0-9]{1,4})))$/
	return patt.test(str)
}

//11验证m到n位数字
var checkMNfigure = function(str) {
	if (!str) {
		return false
	}
	//如果m=1,n=3,验证的则是0~999之间的数(不包括00,000)
	var patt = /^((([1-9])([0-9]{m-1,n-1}))|0)$/
	return patt.test(str)
	//可以全0
	// var patt = /^\d{m,n}$/
	// return patt.test(str)
	
}


//12验证n位数字
var checkNfigure = function(str) {
	if (!str) {
		return false
	}
	//如果n=3,验证的则是100~999之间的数(不全0)
	var patt = /^([1-9])([0-9]{n-1})$/
	return patt.test(str)
	
	//可以全0，如果n为3，验证的则是000~999之间的
	// var patt = /^\d{n}$/
	// return patt.test(str)
}


//13验证正整数(包括0)
var checkZinteger = function(str) {
	if (!str) {
		return false
	}
	var patt = /^(0|[1-9][0-9]*)$/
	return patt.test(str)
}


//14验证网址
var checkUrl = function(str) {
	if (!str) {
		return false
	}
	//以http://或https://或www开头的
	var patt =/(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/
	return patt.test(str)
}


//15验证空白字符
var checkBChar = function(str) {
	if (!str) {
		return false
	}
	//用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)
	var patt = /^\s*|\s*$/
	return patt.test(str)
}


//16验证参数
var checkParameter = function(str) {
	if (!str) {
		return false
	}
	//用来表示以字母开头的参数，如name=sfdf&age=20等等
	var patt = /^([A-z_]+\=[A-z0-9_-]+)(\&[A-z_]+\=[A-z0-9_-]+)*$/
	return patt.test(str)
}
